package nowcoder.written_examination.mogujie;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @author fance
 * @date 2018/6/26 16:52
 */
public class Main {
    public static void main(String[] args) {
//        B();
//    D();
//    E();
//        C();
    A();
    }

    public static void A() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int r = scanner.nextInt();
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            int x1 = scanner.nextInt();
            int y1 = scanner.nextInt();
            double distance = Math.sqrt((x1 - x) * (x1 - x) + (y1 - y) * (y1 - y));
            int cnt = 0;
            for (int i = 0; i < distance; i += (2 * r)) {
                cnt++;
            }
            System.out.println(cnt);
        }
    }
    public static void C() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int p = scanner.nextInt();
            int q = scanner.nextInt();
            int l = scanner.nextInt();
            int r = scanner.nextInt();
            Map<Integer,Integer> aFree = new HashMap<>();
            Map<Integer,Integer> bFree = new HashMap<>();
            for (int i = 0; i < p; i++) {
                aFree.put(scanner.nextInt(),scanner.nextInt());
            }
            for (int i = 0; i < q; i++) {
                bFree.put(scanner.nextInt(),scanner.nextInt());
            }
            int res = 0;
            for (int i = l; i <= r; i++) {
                if (C_Core(aFree,bFree,i)) {
                    res++;
                }
            }
            System.out.println(res);
        }
    }
    private static boolean C_Core(Map<Integer,Integer> aFree,Map<Integer,Integer> bFree,int times) {
        int cnt = 0;
        for (Map.Entry<Integer,Integer> bEntry : bFree.entrySet()) {
            int st = bEntry.getKey() + times;
            int end = bEntry.getValue() + times;
            for (int i = st; i <= end; i++) {
                for (Map.Entry<Integer,Integer> aEntry : aFree.entrySet()) {
                    if (i == aEntry.getKey() || i == aEntry.getValue()) {
                        cnt++;
                        break;
                    }
                }
            }

        }
        return cnt > 0;
    }
    public static void E() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String s = scanner.nextLine();
            boolean flag = false;
            for (int i = 0; i < s.length(); i++) {
                for (int j = 0; j < 26; j++) {
                    String cur = "";
                    if (i == 0) {
                        cur = String.valueOf((char)('a' + j)) + s;
                    } else if (i == s.length() - 1) {
                        cur = s + String.valueOf((char)('a' + j));
                    } else {
                        cur = s.substring(0,i) + String.valueOf((char)('a' + j)) + s.substring(i);
                    }

                    if (isPalindrome(cur)) {
                        flag = true;
                    }
                }
            }



            if (flag) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }
    }
    public static boolean isPalindrome(String s) {
        int st = 0,end = s.length() - 1;
        while (st < end) {
            if (s.charAt(st++) != s.charAt(end--)) {
                return false;
            }
        }
        return true;
    }
    public static void D() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int p = scanner.nextInt();
            int n = scanner.nextInt();
            ArrayList<Integer> list = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                list.add(scanner.nextInt());
            }
            System.out.println(D_Core(list,p));
        }
    }
    private static int D_Core(ArrayList<Integer> list,int p) {
        Map<Integer,Integer> map = new HashMap<>();
        for (int i = 0; i < list.size(); i++) {
            int cur = list.get(i);
            if (map.containsKey(cur % p)) {
                return i + 1;
            }
            map.put(cur % p,cur);
        }
        return -1;
    }
    public static void B() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            ArrayList<Integer> list = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                list.add(scanner.nextInt());
            }
            int res = 1000;
            for (int i = 0; i < n; i++) {
                Integer tmp = list.get(i);
                ArrayList<Integer> tmpList = new ArrayList<>(list);
                tmpList.remove(tmp);
                res = Math.min(B_Core(tmpList), res);
            }
            System.out.println(res);
        }
    }
    private static int B_Core(ArrayList<Integer> list) {
        // 计算最大间隔
        int max = 0;
        for (int i = 0; i < list.size() - 1; i++) {
            max = Math.max(list.get(i + 1) - list.get(i),max);
        }
        return max;
    }
}
